/////////////////////////////////////////////////////////////////////////////
/*/	
 *	Creator:		Joshua C. Rouzer
 *	Title:			
 *	Last Edited:	06/17/2013
 *	Summary:		
/*/
/////////////////////////////////////////////////////////////////////////////
#pragma once
#include "Message.h"
#include <queue>
using namespace std;

typedef void (*MESSAGEPROC)(CMessage*);

class CMessageSystem
{
private:
	queue<CMessage*> m_MsgQueue;
	MESSAGEPROC m_FnMsgProc;

public:
	CMessageSystem(void);
	~CMessageSystem(void);
	CMessageSystem(CMessageSystem& Ref);
	CMessageSystem& operator=(CMessageSystem& Ref);
	static CMessageSystem* GetInstance();
	void InitMessageSystem(MESSAGEPROC proc);
	void SendNewMessage(CMessage* Msg);
	void ProcessMessages();
	void ClearMessages();
	void Shutdown();
	int GetNumMessages();
};

